<?php
/*
Plugin Name: wp Formazione
Description: Crea una piattaforma per progettare, erogare e rendicontare corsi di formazione
Plugin URI:  http://www.decristofano.it/
Version:     0.1
Author:      Luca De Cristofano, Carmine Ricco
Author URI:  http://www.decristofano.it/
*/


/*

USAGE:
View readme


*/

define('WPF_DOMAIN','wp-formazione');

if (defined('ADMIN_HELPER')) {
    
require_once "wp-formazione_includes.php";

require_once "tassonomie.php";
require_once "stati.php";

// progettazione
require_once "progetto.php";
require_once "commessa.php";
require_once "modulo.php";
require_once "schedaSpesa.php";
require_once "schedaAttivita.php";
// erogazione
require_once "contenuto.php";
require_once "corso.php";
require_once "iscrizione.php";
require_once "risorsa.php";
require_once "attivita.php";

// rendicontazione - risorse
require_once "contratto.php";
require_once "assegnazione.php";
require_once "spesa.php";
// rendicontazione - ciclo attivo
require_once "fatturaEmessa.php";
require_once "incasso.php";
require_once "sollecito.php";
// rendicontazione - ciclo passivo
require_once "fatturaRicevuta.php";
require_once "pagamento.php";


$wpf_queries=array(
    // progetti
    'progetti_approvati' => array( 'post_type' => 'wpf_progetto', 'post_status'=> array('publish', 'approved')),
    'progetti_pubblicati' => array( 'post_type' => 'wpf_progetto', 'post_status'=> array('publish', 'approved')),
    'progetti_commessa' => array( 'post_type' => 'wpf_progetto', 'post_parent' => '%1:s', 'post_status'=> array('publish', 'approved')),
    // moduli
    'commesse_tutte' => array( 'post_type' => 'wpf_commessa', 'post_status'=> array('publish','close')),
    // utenti : da utilizzare con get_users
    'utenti_tutti'   => array( 'blog_id' => 1),
    'utenti_progettazione' => array('blog_id' => 1),
    'utenti_risorse' => array('blog_id' => 1),
    
    // moduli
    'moduli_approvati' => array( 'post_type' => 'wpf_modulo', 'post_status'=> array('publish','approved')),
    'moduli_progetto' => array('post_type' => 'wpf_modulo', 'post_parent' => '%1:s', 'orderby' => 'menu_order', 'order' => 'asc'),
    'moduli_nonassociati' => array('post_type' => 'wpf_modulo', 'post_parent' => 0, 'orderby' => 'post_title', 'order' => 'asc'),
    // schedespesa
    'schedespesa_progetto' => array('post_type' => 'wpf_scheda_spesa', 'post_parent' => '%1:s', 'orderby' => 'menu_order', 'order' => 'asc'),
    'schedespesa_spesa' => array('post_type' => 'wpf_scheda_spesa', 'post_parent' => '%1:s', 'orderby' => 'menu_order', 'order' => 'asc'),
    'schedespesa_nonassociate' => array('post_type' => 'wpf_scheda_spesa', 'post_parent' => 0, 'orderby' => 'post_title', 'order' => 'asc'),
    // corsi
    'corsi_progetto' => array('post_type' => 'wpf_corso', 'post_parent' => '%1:s', 'orderby' => 'menu_order', 'order' => 'asc'),
    'corsi_nonassociati' => array('post_type' => 'wpf_corso', 'post_parent' => 0, 'orderby' => 'post_title', 'order' => 'asc'),
    'corsi_pubblicati' => array('post_type' => 'wpf_corso',  'post_status'=> array('publish','approved'), 'orderby' => 'post_title', 'order' => 'asc'),
    
    // assegnazioni
    'assegnazioni_risorsa' => array('post_type' => 'wpf_assegnazione', 'post_parent' => '%1:s', 'orderby' => 'order'),
    'assegnazioni_spesa' => array('post_type' => 'wpf_assegnazione', 'post_parent' => '%1:s', 'orderby' => 'order'),
    'assegnazioni_nonassociate' => array('post_type' => 'wpf_assegnazione', 'post_parent' => 0, 'orderby' => 'post_title', 'order' => 'asc'),
    //risorse
    'risorse_tutte' => array( 'post_type' => 'wpf_risorsa', 'post_status'=> array('approved','publish','close'),'orderby' => 'post_title', 'order' => 'asc'),
    'fatture_emesse' => array( 'post_type' => 'wpf_fattura_emessa', 'post_status'=> array('approved','publish','close'),'orderby' => 'post_title', 'order' => 'asc'),
    'contratti_tutti' => array( 'post_type' => 'wpf_contratto', 'post_status'=> array('approved','publish','close'),'orderby' => 'post_title', 'order' => 'asc'),
    
    // spese
    'spese_tutte' => array( 'post_type' => 'wpf_spesa', 'orderby' => 'post_title', 'order' => 'asc'),
    'spese_nonassociate' => array( 'post_type' => 'wpf_spesa', 'post_parent' => 0, 'orderby' => 'post_title', 'order' => 'asc'),
    'spese_corso' => array('post_type' => 'wpf_spesa', 'post_parent' => '%1:s', 'orderby' => 'order'),
    'fatture_ricevute' => array( 'post_type' => 'wpf_fattura_ricevuta', 'orderby' => 'post_title', 'order' => 'asc'),
    
    
    // questo lo devo verificare se serve
    'partners_progetto' => array('post_type' => 'wpf_???', 'post_parent' => '%1:s', 'orderby' => 'menu_order', 'order' => 'asc'),
    'partners_tutti' => array('post_type' => 'wpf_partner'),
    'pagamenti_fattura_ricevuta' => array('post_type' => 'wpf_pagamento', 'post_parent' => '%1:s', 'orderby' => 'menu_order', 'order' => 'asc'),
    
	// TODO: query di prova
	'contenuti_tutti'   => array(),
);


function wpf_activate() {
		// se non esiste già crea tutto quello che serve
    	$admin = get_role('administrator');

        // aggiunge le capability per i progetti
        $admin->add_cap('delete_progetti');
        $admin->add_cap('edit_progetti');
        $admin->add_cap('publish_progetti');
        $admin->add_cap('edit_published_progetti');
        $admin->add_cap('delete_published_progetti');
        $admin->add_cap('read_private_progetti');
        $admin->add_cap('edit_private_progetti');
        $admin->add_cap('delete_private_progetti');
        $admin->add_cap('edit_others_progetti');
        $admin->add_cap('delete_others_progetti');
        $admin->add_cap('approve_progetti');
        $admin->add_cap('view_detailed_progetti');

        // aggiunge le capability per moduli, scheda attività e scheda spesa
        $admin->add_cap('delete_moduli');
        $admin->add_cap('edit_moduli');
        $admin->add_cap('publish_moduli');
        $admin->add_cap('edit_published_moduli');
        $admin->add_cap('delete_published_moduli');
        $admin->add_cap('read_private_moduli');
        $admin->add_cap('edit_private_moduli');
        $admin->add_cap('delete_private_moduli');
        $admin->add_cap('edit_others_moduli');
        $admin->add_cap('delete_others_moduli');
        $admin->add_cap('approve_moduli');
        $admin->add_cap('viewdetailed_moduli');

        // aggiunge le capability per i corsi
        $admin->add_cap('delete_corsi');
        $admin->add_cap('edit_corsi');
        $admin->add_cap('publish_corsi');
        $admin->add_cap('edit_published_corsi');
        $admin->add_cap('delete_published_corsi');
        $admin->add_cap('read_private_corsi');
        $admin->add_cap('edit_private_corsi');
        $admin->add_cap('delete_private_corsi');
        $admin->add_cap('edit_others_corsi');
        $admin->add_cap('delete_others_corsi');
        $admin->add_cap('approve_corsi');
        $admin->add_cap('view_detailed_corsi');

        // aggiunge le capability per le commesse
        $admin->add_cap('delete_commesse');
        $admin->add_cap('edit_commesse');
        $admin->add_cap('publish_commesse');
        $admin->add_cap('edit_published_commesse');
        $admin->add_cap('delete_published_commesse');
        $admin->add_cap('read_private_commesse');
        $admin->add_cap('edit_private_commesse');
        $admin->add_cap('delete_private_commesse');
        $admin->add_cap('edit_others_commesse');
        $admin->add_cap('delete_others_commesse');
        $admin->add_cap('approve_commesse');
        $admin->add_cap('view_detailed_commesse');
		
		// aggiunge le capability per le schede spesa
        $admin->add_cap('delete_schede_spesa');
        $admin->add_cap('edit_schede_spesa');
        $admin->add_cap('publish_schede_spesa');
        $admin->add_cap('edit_published_schede_spesa');
        $admin->add_cap('delete_published_schede_spesa');
        $admin->add_cap('read_private_schede_spesa');
        $admin->add_cap('edit_private_schede_spesa');
        $admin->add_cap('delete_private_schede_spesa');
        $admin->add_cap('edit_others_schede_spesa');
        $admin->add_cap('delete_others_schede_spesa');
        $admin->add_cap('approve_schede_spesa');
        $admin->add_cap('view_detailed_schede_spesa');

        // aggiunge le capability per le iscrizioni
        $admin->add_cap('delete_iscrizioni');
        $admin->add_cap('edit_iscrizioni');
        $admin->add_cap('publish_iscrizioni');
        $admin->add_cap('edit_published_iscrizioni');
        $admin->add_cap('delete_published_iscrizioni');
        $admin->add_cap('read_private_iscrizioni');
        $admin->add_cap('edit_private_iscrizioni');
        $admin->add_cap('delete_private_iscrizioni');
        $admin->add_cap('edit_others_iscrizioni');
        $admin->add_cap('delete_others_iscrizioni');
        $admin->add_cap('approve_iscrizioni');
        $admin->add_cap('view_detailed_iscrizioni');

        // aggiunge le capability per le attività
        $admin->add_cap('delete_attivita');
        $admin->add_cap('edit_attivita');
        $admin->add_cap('publish_attivita');
        $admin->add_cap('edit_published_attivita');
        $admin->add_cap('delete_published_attivita');
        $admin->add_cap('read_private_attivita');
        $admin->add_cap('edit_private_attivita');
        $admin->add_cap('delete_private_attivita');
        $admin->add_cap('edit_others_attivita');
        $admin->add_cap('delete_others_attivita');
        $admin->add_cap('approve_attivita');
        $admin->add_cap('view_detailed_attivita');

        // aggiunge le capability per le fatture emesse
        $admin->add_cap('delete_fatture_emesse');
        $admin->add_cap('edit_fatture_emesse');
        $admin->add_cap('publish_fatture_emesse');
        $admin->add_cap('edit_published_fatture_emesse');
        $admin->add_cap('delete_published_fatture_emesse');
        $admin->add_cap('read_private_fatture_emesse');
        $admin->add_cap('edit_private_fatture_emesse');
        $admin->add_cap('delete_private_fatture_emesse');
        $admin->add_cap('edit_others_fatture_emesse');
        $admin->add_cap('delete_others_fatture_emesse');
        $admin->add_cap('approve_fatture_emesse');
        $admin->add_cap('view_detailed_fatture_emesse');

        // aggiunge le capability per gli incassi
        $admin->add_cap('delete_incassi');
        $admin->add_cap('edit_incassi');
        $admin->add_cap('publish_incassi');
        $admin->add_cap('edit_published_incassi');
        $admin->add_cap('delete_published_incassi');
        $admin->add_cap('read_private_incassi');
        $admin->add_cap('edit_private_incassi');
        $admin->add_cap('delete_private_incassi');
        $admin->add_cap('edit_others_incassi');
        $admin->add_cap('delete_others_incassi');
        $admin->add_cap('approve_incassi');
        $admin->add_cap('view_detailed_incassi');

        // aggiunge le capability per le fatture ricevute
        $admin->add_cap('delete_fatture_ricevute');
        $admin->add_cap('edit_fatture_ricevute');
        $admin->add_cap('publish_fatture_ricevute');
        $admin->add_cap('edit_published_fatture_ricevute');
        $admin->add_cap('delete_published_fatture_ricevute');
        $admin->add_cap('read_private_fatture_ricevute');
        $admin->add_cap('edit_private_fatture_ricevute');
        $admin->add_cap('delete_private_fatture_ricevute');
        $admin->add_cap('edit_others_fatture_ricevute');
        $admin->add_cap('delete_others_fatture_ricevute');
        $admin->add_cap('approve_fatture_ricevute');
        $admin->add_cap('view_detailed_fatture_ricevute');

        // aggiunge le capability per i pagamenti
        $admin->add_cap('delete_pagamenti');
        $admin->add_cap('edit_pagamenti');
        $admin->add_cap('publish_pagamenti');
        $admin->add_cap('edit_published_pagamenti');
        $admin->add_cap('delete_published_pagamenti');
        $admin->add_cap('read_private_pagamenti');
        $admin->add_cap('edit_private_pagamenti');
        $admin->add_cap('delete_private_pagamenti');
        $admin->add_cap('edit_others_pagamenti');
        $admin->add_cap('delete_others_pagamenti');
        $admin->add_cap('approve_pagamenti');
        $admin->add_cap('view_detailed_pagamenti');

        // aggiunge le capability per le assegnazioni
        $admin->add_cap('delete_assegnazioni');
        $admin->add_cap('edit_assegnazioni');
        $admin->add_cap('publish_assegnazioni');
        $admin->add_cap('edit_published_assegnazioni');
        $admin->add_cap('delete_published_assegnazioni');
        $admin->add_cap('read_private_assegnazioni');
        $admin->add_cap('edit_private_assegnazioni');
        $admin->add_cap('delete_private_assegnazioni');
        $admin->add_cap('edit_others_assegnazioni');
        $admin->add_cap('delete_others_assegnazioni');
        $admin->add_cap('approve_assegnazioni');
        $admin->add_cap('view_detailed_assegnazioni');
        
        // aggiunge le capability per le contratti
        $admin->add_cap('delete_contratti');
        $admin->add_cap('edit_contratti');
        $admin->add_cap('publish_contratti');
        $admin->add_cap('edit_published_contratti');
        $admin->add_cap('delete_published_contratti');
        $admin->add_cap('read_private_contratti');
        $admin->add_cap('edit_private_contratti');
        $admin->add_cap('delete_private_contratti');
        $admin->add_cap('edit_others_contratti');
        $admin->add_cap('delete_others_contratti');
        $admin->add_cap('approve_contratti');
        $admin->add_cap('view_detailed_contratti');
        
        // aggiunge le capability per le risorse
        $admin->add_cap('delete_risorse');
        $admin->add_cap('edit_risorse');
        $admin->add_cap('publish_risorse');
        $admin->add_cap('edit_published_risorse');
        $admin->add_cap('delete_published_risorse');
        $admin->add_cap('read_private_risorse');
        $admin->add_cap('edit_private_risorse');
        $admin->add_cap('delete_private_risorse');
        $admin->add_cap('edit_others_risorse');
        $admin->add_cap('delete_others_risorse');
        $admin->add_cap('approve_risorse');
        $admin->add_cap('view_detailed_risorse');
        
        // aggiunge le capability per le risorse
        $admin->add_cap('delete_spese');
        $admin->add_cap('edit_spese');
        $admin->add_cap('publish_spese');
        $admin->add_cap('edit_published_spese');
        $admin->add_cap('delete_published_spese');
        $admin->add_cap('read_private_spese');
        $admin->add_cap('edit_private_spese');
        $admin->add_cap('delete_private_spese');
        $admin->add_cap('edit_others_spese');
        $admin->add_cap('delete_others_spese');
        $admin->add_cap('approve_spese');
        $admin->add_cap('view_detailed_spese');

        
}

// avvio della pagina
function wpf_init() {

    // creo qualunque cosa non legata ai post

    //wp_register_script($id,$url);

    // The "plugin_locale" filter is also used in load_plugin_textdomain()
    $locale = apply_filters('plugin_locale', get_locale(), WPF_DOMAIN);

    load_textdomain(WPF_DOMAIN, WP_LANG_DIR.'/'.WPF_DOMAIN.'/'.WPF_DOMAIN.'-'.$locale.'.mo');
    load_plugin_textdomain(WPF_DOMAIN, FALSE, dirname(plugin_basename(__FILE__)).'/languages/');

    register_custom_statuses();
}



// menu amministrazione
function wpf_admin_menu() {

    // pagine riassuntive
  //add_menu_page(  $parent_slug,     $page_title,             $menu_title, $capability,      $menu_slug,       $function,           $icon_url, $position );
    
    // pagina di riassunto della progettazione della formazione
    add_menu_page(                    'Progettazione Formazione',      'Progettazione',     'manage_options', 'wpf_progettazione', 'wpf_progettazione_page', '','103' );
    //sotto pagine di Erogazione
    //add_submenu_page( 'wpf_progettazione', 'altre',                     'Altre',     'manage_options', 'wpf_progettazione_altre',             'wpf_options_page' );

    
    // pagina di riassunto dell'erogazione della formazione
    add_menu_page(                    'Erogazione Formazione',      'Erogazione',     'manage_options', 'wpf_erogazione', 'wpf_options_page', '','100' );
    //sotto pagine di Erogazione
    add_submenu_page( 'wpf_erogazione', 'altre',                     'Altre',     'manage_options', 'wpf_erogazione_altre',             'wpf_options_page' );

    // opzioni per il contenuto : vedi contenuto.php
    add_submenu_page( 'wpf_erogazione','Opzioni contenuti',   'Contenuti',   'manage_options',   'wpf_options_contenuti',           'wpf_contenuto_settings_page' );

    
    
    // pagina di riassunto della rendicontazione
    add_menu_page(                    'Rendicontazione Formazione', 'Rendicontazione','manage_options', 'wpf_rendicontazione', 'wpf_options_page', '','101' );


    //sotto pagine di Rendicontazione
    add_submenu_page( 'wpf_rendicontazione', 'Opzioni generali',        'Generale',  'manage_options', 'wpf_rendicontazione_options',           'wpf_options_page' );

    


    // opzioni di configurazione nel menu impostazioni
    add_submenu_page( 'options-general.php',      'Opzioni configurazione',            'Formazione',   'manage_options',   'wpf_options',           'wpf_options_page' );

    

}

function wpf_admin_reorder_menu() {

// riorganizza il menu

    admin_move_menu('menu-posts-wpf_fattura_emessa', 'menu-dashboard');
    admin_move_menu('menu-posts-wpf_fattura_ricevuta', 'menu-dashboard');
    admin_move_menu('menu-posts-wpf_risorsa', 'menu-dashboard');
    admin_move_menu('menu-posts-wpf_corso', 'menu-dashboard');
    admin_move_menu('menu-posts-wpf_modulo', 'menu-dashboard');
    admin_move_menu('menu-posts-wpf_progetto', 'menu-dashboard');
    add_menu_div('menu-dashboard');
    add_menu_div('menu-posts-wpf_fatture_emesse');

    admin_move_menu('toplevel_page_wpf_erogazione', 'menu-dashboard');
    admin_move_menu('toplevel_page_wpf_rendicontazione', 'menu-dashboard');
    admin_move_menu('toplevel_page_wpf_progettazione', 'menu-dashboard');
}



function wpf_options_page()  {
//@TODO va completato

    //must check that the user has the required capability
    if (!current_user_can('manage_options'))   {
	wp_die( __('You do not have sufficient permissions to access this page.') );
    }

    // save



    // read
    admin_panel('wpf_content_options',
                'options-general.php?page=wpf_options',
                'Accesso ad opzioni avanzata',
                'Pagine di accesso per la gestione avanzata di wp-for',
                'ver. 00',
                WPF_DOMAIN);

    echo '<h2>Tassonomie</h2>';
    echo '<ul>';
    echo '<li><a href="edit-tags.php?taxonomy=classificazioni" title="Aggiunge, Modifica, ed elimina le classificazioni attribuibili ai progetti ">Classificazioni dei progetti</a></li>';
    echo '<li><a href="edit-tags.php?taxonomy=argomenti" title="Aggiunge, Modifica, ed elimina le classificazioni attribuibili ai progetti ">Argomenti dei progetti e dei moduli</a></li>';
    echo '<li><a href="edit-tags.php?taxonomy=macrovoci" title="Aggiunge, Modifica, ed elimina le classificazioni attribuibili ai progetti ">Macrovoci delle schede spesa/finanziarie</a></li>';
    echo '<li><a href="edit-tags.php?taxonomy=partners" title="Aggiunge, Modifica, ed elimina le classificazioni attribuibili ai progetti ">Partners</a></li>';
    echo '<li><a href="edit-tags.php?taxonomy=tipologia" title="Aggiunge, Modifica, ed elimina le classificazioni attribuibili ai progetti ">Tipologia di una risorsa</a></li>';
    echo '<li><a href="edit-tags.php?taxonomy=competenza" title="Aggiunge, Modifica, ed elimina le classificazioni attribuibili ai progetti ">Competenza di una risorsa</a></li>';
    
    
    
    echo '
        in questa pagina vanno :
        <ul>
            <li>elenco tassonomie non presenti negli elenchi</li>
            <li></li>
        </ul>
    ';
    
    

    admin_panel_close();
}

function wpf_progettazione_page() {
    
        // read
    admin_panel('wpf_progettazione_page',
                'admin.php?page=wpf_progettazione',
                'Stato attività di progettazione',
                'PAgina di monitoraggio delle attività di progettazione',
                'ver. 00',
                WPF_DOMAIN);

    ?>
        <h2>Progettazioni in corso</h2>
        <p>E' uscito un nuovo bando o è stata richiesto un nuovo corso? <a href="post-new.php?post_type=wpf_commessa" title="Pagina per la creazione di una nuova commessa"> crea la commessa </a> </p>
        <p>Commesse attive <p>
            <table class="wp-list-table widefat fixed" cellspacing="0">
                <thead>
                    <tr><th scope="col">Commessa</th><th scope="col">Stato</th><th scope="col"></th></tr>
                </thead>
                <tbody>    
                <?php
                $commesse = get_posts(wpf_get_query('commesse_tutte'));
                foreach ($commesse as $commessa ) {
                    echo "<tr><td>".$commessa->post_title."</td>";
                    $stato = $commessa->post_status;
                    // se non ho progetti figli, non posso mettere la commessa in stato pubblico!!!
                    $progetti_figli = get_posts(wpf_get_query('progetti_commessa',$commessa->ID));
                    if (count($progetti_figli)==0) $stato='no_project';
                    else {
                        foreach($progetti_figli as $progetto) {
                            // nel caso vi siano più progetti figli, questo metodo da qualche errore....
                            
                            if ($progetto->post_status=='approved') 
                                    if (get_postmeta($commessa->ID,'richiesta',true)=='')
                                                                $stato='require_richiesta';
                                    elseif (get_postmeta($commessa->ID,'determina',true)=='')
                                                                $stato='require_determina';
                                    elseif (get_postmeta($commessa->ID,'contratto',true)=='')
                                                               $stato ='require_contratto';
                                    elseif ($commessa->post_status=='draft') 
                                                               $stato ='require_publish'; 
                            // ed i progetti in bozza?
                        }
                        if ($commessa->post_status=='publish') {
                            // devo verificare, adesso, la presenza di corsi in erogazione
                            $corsi = get_posts(wpf_get_query('commesse_tutte'));
                            if (count($corsi)==0) $stato = 'require_course';
                            else foreach($corsi as $c => $corso) {
                                        if ($corso->post_status=='draft') $stato = 'require_pendig'; // il corso in pratica è da fare
                                        elseif ($corso->post_status=='pending') $stato = 'require_start'; // il corso è pronto deve solo essere pubblicato per dire che gli utenti possono iscriversi
                                        elseif ($corso->post_status=='publish') $stato = 'publish'; // il corso è pronto ed in attesa di erogazione
                                        elseif ($corso->post_status=='going') $stato = 'going'; // il corso è in erogazione : non posso fare nulla
                                        elseif ($corso->post_status=='closed') { // il corso è terminato
                                            // ho rendicontato oppure no ? devo verificarlo sui documenti caricati nel corso... o nel progetto? 
                                            $stato = 'closed'; 
                                        }
                                        
                                 }
                             
                        }
                    }
                    
                    
                    switch ($stato) {
                        case 'draft' : echo "<td>Questa commessa è in bozza</td><td></td>";
                        break;
                        case 'no_project' : echo  '<td>Questa commessa è senza progetto </td>
                                                <td><a href="/edit.php?post_type=wpf_progetto&parent='.$commessa->ID.'" title="Vai alla pagina per creare un nuovo progetto">Crea un nuovo progetto</a></td>';
                        break;
                        case 'require_richiesta' : echo  '<td>Questa commessa ha un progetto approvato </td>
                                                <td><a <a href="/post.php?post='.$commessa->ID.'&action=edit" title="Vai alla pagina della commessa">Richiedi la delibera o i fondi</a></td>';
                        break;
                        case 'require_determina' : echo  '<td>Questa commessa ha una richiesta di determina</td>
                                                <td><a href="/post.php?post='.$commessa->ID.'&action=edit" title="Vai alla pagina della commessa">Inserisci la delibera o determina di approvazione</a></td>';
                        break;
                        case 'require_contratto' : echo  '<td>Questa commessa ha una determina approvata</td>
                                                <td><a href="/post.php?post='.$commessa->ID.'&action=edit" title="Vai alla pagina della commessa">Inserisci la convenzone o il contratto</a></td>';
                        break;
                        case 'require_publish' : echo  '<td>Questa commessa è pronta per l\'erogazione dei corsi</td>
                                                <td><a <a href="/post.php?post='.$commessa->ID.'&action=edit" title="Vai alla pagina della commessa">Pubblicala</a></td>';
                        break;
                        case 'require_course' : echo  '<td>Questa commessa è pronta per l\'erogazione dei corsi</td>
                                                <td><a href="post-new.php?post_type=wpf_corso" title="Crea un nuovo corso">Crea un corso</a></td>';
                        break;
                        case 'require_pending' : echo  '<td>Questa commessa è pronta per l\'erogazione dei corsi</td>
                                                <td><a href="post-new.php?post_type=wpf_corso" title="Crea un nuovo corso">Avvia i corsi</a></td>';
                        break;
                        case 'require_start' : echo  '<td>I corsi stanno partendo</td>
                                                <td></td>';
                        break;
                        case 'publish' : echo  '<td>I corsi stanno partendo</td>
                                                <td></td>';
                        break;
                        case 'going' : echo  '<td>I corsi sono in erogazione</td>
                                                <td></td>';
                        break;
                        case 'closed' : echo  '<td>I corsi sono conclusi</td>
                                                <td><a href="post-new.php?post_type=wpf_corso" title="Crea un nuovo corso">Rendiconta</a></td>';
                        break;
                        case 'terminated' : echo  '<td>I corsi sono rendicontati</td>
                                                <td><a href="post-new.php?post_type=wpf_corso" title="Crea un nuovo corso">Eroga un nuovo corso</a></td>';
                        break;
                    }
                    echo "</tr>\n";
                }
    
        ?>
        </tbody>
       </table>
        <a href="/edit.php?post_type=wpf_commessa" title="Vai alla pagina delle commesse">Vedi tutte le commesse</a> 
            ... questa commessa ha questi questi corsi in erogazione
            ... questa commessa ha questi corsi conclusi da rendicontare... rendiconta il corso
            ... questa commessa è conclusa. Vuoi erogare un nuovo corso? ... eroga un nuovo corso
        
        <p>Progetti attivi: <br />
            .... questo progetto è da approvare .... vedi
            .... questo progetto ha moduli e schede spesa non approvate... vedi
            .... questo modulo non ha contenuti ne schede attività ... vedi 
        </p>
        <p>Corsi: <br />
            .... questo corso mancano le attività e le spese ....
            ... questo corso è pronto per essere chiuso ...
        </p>
        
        <?php

    admin_panel_close();
    
    
}

function wpf_gotoparent() {
global $post;
    $pp=0;

    
    $screen = get_current_screen();
    if (($screen->base)!='post') return;
    
    
    if (isset($_REQUEST['parent'])) $pp=$_REQUEST['parent'];
    if (@$post->post_parent!=0) $pp=$post->post_parent;

    
     if ($pp!=0){
        $parent = get_post($pp);
        $link = site_url('/')."wp-admin/post.php?post=".$parent->ID."&action=edit";
        echo "<div class='error'><p>Torna a <a href='".$link."'>". $parent->post_title."</a></p></div>";
    }
    
}


function wpf_save_action($action) {
global $post;
    if (!isset($post)) return $action;
    
    if ($post->post_status=='auto-draft') $label= 'Save';
    elseif ($post->post_status=='inherit') $label= 'Save';
    else $label = 'Save '.$post->post_status;
    
    $new_action = array('label' => $label);
    return $new_action;
}

function wpf_publish_action($action) {
global $post;
    if (!isset($post)) return $action;
    
    // calcola i permessi 
    
    $type = get_post_type_object($post->post_type);
    $type_cap = $type->cap; 
    $approve_cap = str_replace('edit','approve',$type_cap->edit_posts);
    $can_next = current_user_can($approve_cap);
    
    // in base allo stato attuale, pubblica la label per lo stato prossimo
    switch ($post->post_status) {
    case 'draft':
        $label = 'Sottoponi';
    break;
    case 'pending':
        if ($can_next)   $label = 'Approva';
        else             $label = 'Salva';
    break;
    case 'approve':
        if ($can_next)   $label = 'Pubblica';
        else             $label = 'Salva';
    break;
    case 'publish':
        if ($can_next)   $label = 'Chiudi';
        else             $label = 'Salva';
    break;
    default : 
        $label = 'Pubblica';
        
    }
    
    $new_action = array('label' => $label, 'action'=>'publish');
    return $new_action;
}

function wpf_hide_edit_permalinks_admin_css()
{
    ?>
	<style type="text/css">
		<!--
		#titlediv
		{
			margin-bottom: 10px;
		}
	
		#edit-slug-box
		{
			display: none;
		}
		-->
	</style>
	<?php
}


//@WIP attivazione degli hook
function wpf_hook(){
//register_activation_hook(__FILE__, 'fascicoli_rewrite_flush');  // non ho ben capito, ma serve per i permalink
add_action('activate_plugin', 'wpf_activate'); // quando attivo il plugin
add_action('init', 'wpf_init'); // quando inizializzo la pagina
add_action('admin_menu', 'wpf_admin_menu'); // quando genero il menù di amministrazione
add_action('admin_menu', 'wpf_admin_reorder_menu',20); // riordina
add_action('admin_notices','wpf_gotoparent');
add_filter('save_action','wpf_save_action');
add_filter('publish_action','wpf_publish_action');

add_action('admin_head', 'wpf_hide_edit_permalinks_admin_css');


}




wpf_hook();

} // defined(ADMIN_HELPER)

?>
